From 339146def15b9d771d8ba3fdd7bdbaabca9b03fb Mon Sep 17 00:00:00 2001 From: "Carol (Nichols || Goulding)" Date: Sat, 19 Sep 2015 13:06:23 -0400 Subject: [PATCH] Update source when getting its root_package This way, callers who want source.root_package() don't have to remember to call source.update() before that. Since source.update() is a noop if the source has already been updated, there's not a reason I could see to raise an error instead of just calling it. The one remaining place that calls source.root_package() that is still calling source.update() immediately before is in bin/read_manifest, where the errors from update() are mapped to CliErrors. --- src/cargo/ops/cargo_clean.rs | 1 - src/cargo/ops/cargo_compile.rs | 2 -- src/cargo/ops/cargo_doc.rs | 2 -- src/cargo/ops/cargo_fetch.rs | 1 - src/cargo/ops/cargo_generate_lockfile.rs | 4 +--- src/cargo/ops/cargo_package.rs | 3 +-- src/cargo/ops/cargo_pkgid.rs | 3 +-- src/cargo/ops/cargo_run.rs | 2 -- src/cargo/ops/registry.rs | 3 --- src/cargo/sources/path.rs | 6 ++---- 10 files changed, 5 insertions(+), 22 deletions(-) diff --git a/src/cargo/ops/cargo_clean.rs b/src/cargo/ops/cargo_clean.rs index 03b057555..caae5e4f9 100644 --- a/src/cargo/ops/cargo_clean.rs +++ b/src/cargo/ops/cargo_clean.rs @@ -19,7 +19,6 @@ pub struct CleanOptions<'a> { pub fn clean(manifest_path: &Path, opts: &CleanOptions) -> CargoResult<()> { let mut src = try!(PathSource::for_path(manifest_path.parent().unwrap(), opts.config)); - try!(src.update()); let root = try!(src.root_package()); let target_dir = opts.config.target_dir(&root); diff --git a/src/cargo/ops/cargo_compile.rs b/src/cargo/ops/cargo_compile.rs index 74d0b0942..f177e5e7e 100644 --- a/src/cargo/ops/cargo_compile.rs +++ b/src/cargo/ops/cargo_compile.rs @@ -89,8 +89,6 @@ pub fn compile<'a>(manifest_path: &Path, let mut source = try!(PathSource::for_path(manifest_path.parent().unwrap(), options.config)); - try!(source.update()); - // TODO: Move this into PathSource let package = try!(source.root_package()); debug!("loaded package; package={}", package); diff --git a/src/cargo/ops/cargo_doc.rs b/src/cargo/ops/cargo_doc.rs index 8090a35fe..763512caf 100644 --- a/src/cargo/ops/cargo_doc.rs +++ b/src/cargo/ops/cargo_doc.rs @@ -4,7 +4,6 @@ use std::path::Path; use std::process::Command; use core::PackageIdSpec; -use core::source::Source; use ops; use sources::PathSource; use util::{CargoResult, human}; @@ -18,7 +17,6 @@ pub fn doc(manifest_path: &Path, options: &DocOptions) -> CargoResult<()> { let mut source = try!(PathSource::for_path(manifest_path.parent().unwrap(), options.compile_opts.config)); - try!(source.update()); let package = try!(source.root_package()); let mut lib_names = HashSet::new(); diff --git a/src/cargo/ops/cargo_fetch.rs b/src/cargo/ops/cargo_fetch.rs index cbd3382f9..34e6bb27d 100644 --- a/src/cargo/ops/cargo_fetch.rs +++ b/src/cargo/ops/cargo_fetch.rs @@ -10,7 +10,6 @@ use util::{CargoResult, Config, human, ChainError}; pub fn fetch(manifest_path: &Path, config: &Config) -> CargoResult<()> { let mut source = try!(PathSource::for_path(manifest_path.parent().unwrap(), config)); - try!(source.update()); let package = try!(source.root_package()); let mut registry = PackageRegistry::new(config); diff --git a/src/cargo/ops/cargo_generate_lockfile.rs b/src/cargo/ops/cargo_generate_lockfile.rs index f561664b8..c3de1dc43 100644 --- a/src/cargo/ops/cargo_generate_lockfile.rs +++ b/src/cargo/ops/cargo_generate_lockfile.rs @@ -3,7 +3,7 @@ use std::path::Path; use core::PackageId; use core::registry::PackageRegistry; -use core::{Source, Resolve, SourceId}; +use core::{Resolve, SourceId}; use core::resolver::Method; use ops; use sources::{PathSource}; @@ -21,7 +21,6 @@ pub fn generate_lockfile(manifest_path: &Path, config: &Config) -> CargoResult<()> { let mut source = try!(PathSource::for_path(manifest_path.parent().unwrap(), config)); - try!(source.update()); let package = try!(source.root_package()); let mut registry = PackageRegistry::new(config); registry.preload(package.package_id().source_id(), Box::new(source)); @@ -36,7 +35,6 @@ pub fn update_lockfile(manifest_path: &Path, opts: &UpdateOptions) -> CargoResult<()> { let mut source = try!(PathSource::for_path(manifest_path.parent().unwrap(), opts.config)); - try!(source.update()); let package = try!(source.root_package()); let previous_resolve = match try!(ops::load_pkg_lockfile(&package)) { diff --git a/src/cargo/ops/cargo_package.rs b/src/cargo/ops/cargo_package.rs index bcd74f460..684c539fe 100644 --- a/src/cargo/ops/cargo_package.rs +++ b/src/cargo/ops/cargo_package.rs @@ -6,7 +6,7 @@ use tar::Archive; use flate2::{GzBuilder, Compression}; use flate2::read::GzDecoder; -use core::{Source, SourceId, Package, PackageId}; +use core::{SourceId, Package, PackageId}; use sources::PathSource; use util::{self, CargoResult, human, internal, ChainError, Config}; use ops; @@ -29,7 +29,6 @@ pub fn package(manifest_path: &Path, metadata: bool) -> CargoResult> { let mut src = try!(PathSource::for_path(manifest_path.parent().unwrap(), config)); - try!(src.update()); let pkg = try!(src.root_package()); if metadata { diff --git a/src/cargo/ops/cargo_pkgid.rs b/src/cargo/ops/cargo_pkgid.rs index d900510b3..9e982aa37 100644 --- a/src/cargo/ops/cargo_pkgid.rs +++ b/src/cargo/ops/cargo_pkgid.rs @@ -1,7 +1,7 @@ use std::path::Path; use ops; -use core::{Source, PackageIdSpec}; +use core::{PackageIdSpec}; use sources::{PathSource}; use util::{CargoResult, human, Config}; @@ -10,7 +10,6 @@ pub fn pkgid(manifest_path: &Path, config: &Config) -> CargoResult { let mut source = try!(PathSource::for_path(&manifest_path.parent().unwrap(), config)); - try!(source.update()); let package = try!(source.root_package()); let lockfile = package.root().join("Cargo.lock"); diff --git a/src/cargo/ops/cargo_run.rs b/src/cargo/ops/cargo_run.rs index 419a7ab15..5db347623 100644 --- a/src/cargo/ops/cargo_run.rs +++ b/src/cargo/ops/cargo_run.rs @@ -2,7 +2,6 @@ use std::path::Path; use ops::{self, ExecEngine, CompileFilter}; use util::{self, CargoResult, human, process, ProcessError}; -use core::source::Source; use sources::PathSource; pub fn run(manifest_path: &Path, @@ -11,7 +10,6 @@ pub fn run(manifest_path: &Path, let config = options.config; let mut src = try!(PathSource::for_path(&manifest_path.parent().unwrap(), config)); - try!(src.update()); let root = try!(src.root_package()); let mut bins = root.manifest().targets().iter().filter(|a| { diff --git a/src/cargo/ops/registry.rs b/src/cargo/ops/registry.rs index 9f9b035f8..a81dda28c 100644 --- a/src/cargo/ops/registry.rs +++ b/src/cargo/ops/registry.rs @@ -33,7 +33,6 @@ pub fn publish(manifest_path: &Path, verify: bool) -> CargoResult<()> { let mut src = try!(PathSource::for_path(manifest_path.parent().unwrap(), config)); - try!(src.update()); let pkg = try!(src.root_package()); let (mut registry, reg_id) = try!(registry(config, token, index)); @@ -266,7 +265,6 @@ pub fn modify_owners(config: &Config, opts: &OwnersOptions) -> CargoResult<()> { let manifest_path = try!(find_root_manifest_for_cwd(None)); let mut src = try!(PathSource::for_path(manifest_path.parent().unwrap(), config)); - try!(src.update()); let pkg = try!(src.root_package()); pkg.name().to_string() } @@ -329,7 +327,6 @@ pub fn yank(config: &Config, let manifest_path = try!(find_root_manifest_for_cwd(None)); let mut src = try!(PathSource::for_path(manifest_path.parent().unwrap(), config)); - try!(src.update()); let pkg = try!(src.root_package()); pkg.name().to_string() } diff --git a/src/cargo/sources/path.rs b/src/cargo/sources/path.rs index 0bca3de26..8589836d2 100644 --- a/src/cargo/sources/path.rs +++ b/src/cargo/sources/path.rs @@ -46,12 +46,10 @@ impl<'cfg> PathSource<'cfg> { } } - pub fn root_package(&self) -> CargoResult { + pub fn root_package(&mut self) -> CargoResult { trace!("root_package; source={:?}", self); - if !self.updated { - return Err(internal("source has not been updated")) - } + try!(self.update()); match self.packages.iter().find(|p| p.root() == &*self.path) { Some(pkg) => Ok(pkg.clone()), -- 2.30.2